This invention relates to a method of shading a graphics image.
In a computer graphics system, an image is displayed on the screen of a cathode-ray-tube (CRT) or other display device. Generally, the electron beam of the CRT is deflected under control of a digital signal having an X (horizontal) component and a Y (vertical) component, so that pixels on a rectangular array of grid points are addressed row-by-row in accordance with a raster pattern. Data representing the image is generated in a picture processor and is down-loaded from the picture processor to a frame buffer. The frame buffer has memory locations which correspond on a one-to-one basis with the grid points of the CRT display. In the following description, it will be assumed for the sake of clarity that the memory locations of the frame buffer are physically arranged in a rectangular array which corresponds to the array of grid points of the display.
The digital signal used to control deflection of the CRT's electron beam is also used to control addressing of the frame buffer, and the color with which the pixel at a grid point is displayed depends on the contents of the corresponding memory location. The frame buffer thus contains a virtual image of the display that is provided by the CRT. The data provided to the frame buffer by the picture processor may represent an image composed of colored areas. The process of loading data values into the frame buffer memory to represent a colored area is called tiling. In the following description, references are made in connection with a tiling operation to the tiling of specified grid points and the tiling of triangles. However, this is intended merely as an abbreviated way of referring to the tiling of the memory locations corresponding to the specified grid points and to the tiling of the memory locations corresponding to the grid points that lie within the triangles.
A computer graphics system may be used to depict a three-dimensional curved surface by resolving the surface into triangular facets and displaying the projection of those facets into a two-dimensional display plane. Each triangular facet forms a triangle or a line segment when projected into the display plane. The case in which the projection is a line segment will not be considered further herein. Information defining the triangular facets in three-dimensional world space is specified to the picture processor, which utilizes that information to generate information defining the corresponding display plane triangles. This information is made available by the picture processor to a rendering engine, which is used to load shading intensity values I into the frame buffer. Generally, the triangular facets are treated sequentially by the picture processor.
In order to provide an accurate depiction, it is necessary to take account of the fact that when a three-dimensional object is examined, surfaces of the object that are on the far side of the object from the viewer cannot be seen, and therefore data representing these surfaces should not be loaded into the frame buffer. In a graphics system, this is accomplished by hidden surface removal. Hidden surface removal is discussed in Newman and Sproull, "Principles of Interactive Computer Graphics" (McGraw-Hill Book Company, 1979), Second Edition, 369.
Data loaded into the frame buffer memory for tiling of a given grid point represents the color and intensity of light reflected towards the viewer by the corresponding point of the surface being depicted. In the present discussion, this data is referred to as an intensity value I, but may actually be several values representing intensities of separate color components, e.g. intensities of red, green and blue. The three-dimensional appearance of a surface will generally be depicted with an enhanced degree of realism if the intensity value I for a grid point takes account of the position and orientation of the surface element that is depicted by that grid point. This may be accomplished by calculating a surface normal vector at the surface element and applying a lighting model to derive an intensity value I for a grid point representing that surface element. It should be appreciated that use of a lighting model to calculate a grid point intensity value is computationally expensive as complex calculations are required to account for light sources and surface reflectivity.
The intensity value I that is loaded into the frame buffer for a given grid point depends on a shading model that is applied to the displayed surface. Three major shading models are described in J. D. Foley and A. Van Dam, "Fundamentals of Interactive Computer Graphics", 580-584, (1984). The three models are referred to as constant shading, intensity interpolation, or Gouraud, shading and normal-vector interpolation, or Phong, shading. Constant shading uses a single intensity value for a given display area and is much less satisfactory for depicting a curved surface than either Gouraud shading or Phong shading.
In Gouraud shading of a display plane triangle that represents a triangular facet, a vertex surface normal is given for each vertex of the facet, and a vertex intensity is found for each corresponding display plane vertex by applying a selected lighting model to the corresponding vertex normal. The calculated intensity values provide a basis for shading the display plane triangle by linear interpolation of these intensities along each edge of the triangle and between edges along each scan line. Thus, to Gouraud shade a triangle the selected lighting model is accessed once for each vertex. In Phong shading of a triangle, the vertex surface normals are given. End point normals are calculated for the points of intersection of each scan line with the edges of the triangle, by interpolation between the vertex normals at opposite ends of the edges that are intersected by the scan line. For each pixel along a scan line, a surface normal vector is calculated by interpolation between the end point vectors for that scan line. A surface normal vector is associated with every pixel and a selected lighting model is applied to the surface normal vector for each and every pixel to calculate its shading intensity. Because the lighting model is computed for every grid point within the triangle, Phong shading generally requires much more time to execute than Gouraud shading. However, Phong shading provides a more realistic depiction of an object because the position and orientation of each surface element corresponding to each grid point is taken into account.